package cal

import (
	"idle/internal/game/attr"
	"idle/internal/game/hero"
	"idle/pkg/config"
)

//法力值计算器
type ManaAttrCal struct {
}

func (m *ManaAttrCal) Cal(h *hero.Hero) {
	jobConfig := config.GetJobConfig(int(h.Job))
	baseMana := jobConfig.BaseMana + h.Lv*jobConfig.LvToMana + h.GetAttr(attr.Eng)*jobConfig.EngToMana
	h.SetAttr(attr.BaseMana, baseMana)

	Mana := baseMana*(100+h.GetAttr(attr.ExtManaRatio))/100 + h.GetAttr(attr.ExtMana)
	h.SetAttr(attr.Mana, Mana)
	h.Mana = Mana
}

func (m *ManaAttrCal) AssociatedAttr() []attr.Attribute {
	return []attr.Attribute{
		attr.Mana,
		attr.Eng,
		attr.BaseMana,
		attr.ExtManaRatio,
		attr.ExtMana,
	}
}
